8 CLR 10 U$="[197][197][197][197][197][197][197][197][197][197]":O$="[164][164][164][164][164][164][164][164][164]" 100 FORI=830TO900:READX:POKEI,X:NEXT 110 DATA 169,32,162,0,157,0,128,232,224,40,208,248,96,0,0,0,0,0,0 114 DATA 0,169,32,162,39,157,0,128,202,16,250,96,0,0,0,0,0,0,0,0,0 118 DATA 169,32,162,40,157,255,127,202,208,250,96,0,0,0,0,0,0,0,0,0 119 DATA 169,42,162,40,157,255,127,202,208,250,96 200 PRINT"[147][164][164]";O$;O$;O$;O$:PRINT"SYNTAX-LEHRGANG 'MASCHINENSPRACHE' (8) 210 [153]O$;O$;"TOTO":[153]"1.3.3. SPRUNGBEFEHLE 220 PRINT"BEI SPRUNGBEFEHLEN UNTERSCHEIDET MAN 230 [153]"BEDINGTE UND UNBEDINGTE SPRUNGBEFEHLE. 240 PRINT"A) BEDINGTE SPRUNGBEFEHLE SIND SOLCHE 250 [153]"SPRUNGBEFEHLE, DIE NUR AUSGEFUEHRT WER- 260 PRINT"DEN, WENN EINE BESTIMMTE BEDINGUNG ER- 270 [153]"FUELLT IST (BASIC: IF .. THEN GOTO ..). 280 PRINT"B) UNBEDINGTE SPRUENGE WERDEN IMMER 290 [153]"AUSGEFUEHRT (BASIC: GOTO 10). 310 I=1:GOSUB5000:IFFLTHEN200 400 PRINT"[147]A) DIE BEDINGTEN SPRUNGBEFEHLE":PRINTU$;U$;U$ 410 PRINT"IM PROZESSOR-STATUSREGISTER (SR) GEBEN 420 [153]"VIER DER FLAGS AUSKUENFTE UEBER DAS ER- 430 PRINT"GEBNIS DER LETZTEN RECHENOPERATION: DIE 440 [153]"FLAGS N/Z/C/V (NEGATIV/ZERO/CARRY/OVER- 450 PRINT"FLOW).FUER JEDES DIESER VIER FLAGS GIBT 460 [153]"ES ZWEI ABFRAGEN IN FORM VON BEDINGTEN 470 PRINT"SPRUNGBEFEHLEN: ENTWEDER SPRUNG BEI 480 [153]"FLAG = 0 ODER ABER SPRUNG BEI FLAG = 1. 500 PRINT"ES GIBT DAHER ACHT VERSCHIEDENE SPRUNG-":PRINT"BEFEHLE. 520 I[178]2:[141]5000:[139]FL[167]200 600 [153]"LOADTOTOTO":[153]"BMIWAIT BRANCH IF MINUS (IF N-FLAG =1)" 605 [153]"TOTOTO VAL VALVAL" 610 [153]"BPLWAIT BRANCH IF PLUS (IF N-FLAG =0) 615 PRINT" [197] [197][197] 620 [153]"'BRANCH' HEISST 'VERZWEIGEN'. D.H., DAS 630 PRINT"PROGRAMM VERZWEIGT SICH AN DER STELLE, 640 [153]"WO DIESER BEFEHL STEHT. IST DIE ABFRA- 650 PRINT"GEBEDINGUNG ERFUELLT,SO WIRD DER SPRUNG 660 [153]"AUSGEFUEHRT,SONST NICHT. IN DIESEM FALL 670 PRINT"WIRD DAS PROGRAMM MIT DEM BEFEHL FORT- 675 [153]"GESETZT, DER DEM SPRUNGBEFEHL FOLGT. IM 680 PRINT"GEGENSATZ ZU BASIC IST DER SPRUNG ABER 690 [153]"RELATIV ADRESSIERT UND NICHT ABSOLUT. 720 I=3:GOSUB5000:IFFLTHEN400 800 PRINT"[147]WIR ERINNERN UNS: DAS DEM SPRUNGBEFEHL 810 [153]"FOLGENDE BYTE GIBT AN, WIEVIELE BYTES 820 PRINT"IM PROGRAMM UEBERSPRUNGEN WERDEN SOLLEN":PRINT"ES BEDEUTEN: 850 [153]"BMI $01 SPRUNG NACH VORNE UM 1 BYTE 860 PRINT"BMI $00 SPRUNG UM 0 BYTE (ALSO EFFEKTIV 870 [153]" GAR KEIN SPRUNG!) 880 PRINT"BMI $FF SPRUNG NACH HINTEN UM 1 BYTE":PRINT"ETC. 930 I[178]4:[141]5000:[139]FL[167]600 1000 [153]"LOADSIE BRAUCHEN SICH NICHT ZU MERKEN, WEL- 1010 PRINT"CHEN WERT DAS N-FLAG HABEN MUSS, DAMIT 1020 [153]"DER SPRUNG ERFOLGT.MERKEN SIE SICH NUR: 1030 PRINT"BEI BMI WIRD BEI MI[146][145][157][157][164][164]NUS GESPRUNGEN, BEI 1040 [153]"BPL BEI PLWAITONCMDCMDTOTOUS. EINFACH, NICHT WAHR ? 1050 PRINT"ZU BEACHTEN IST HIERBEI, DASS DIE ZAHL 1080 [153]"$00 EINE POSITIVE ZAHL IST. 1130 I=5:GOSUB5000:IFFLTHEN800 1200 PRINT"[147]MEIST GEHT BMI UND BPL EINE VERGLEICHS- 1210 [153]"OPERATION WIE Z.B. CMP VORAUS. DER PRO- 1220 PRINT"ZESSOR VERGLEICHT (= SUBTRAHIERT) ZWEI 1230 [153]"DATENWORTE. ENTSPRECHEND DEM ERGEBNIS 1240 PRINT"SETZT ER DAS N-FLAG AUF 0 ODER 1. MIT 1250 [153]"BMI/BPL FRAGT MAN AB, OB DIE SUBTRAK- 1260 PRINT"TION EIN POSITIVES ODER NEGATIVES ER- 1270 [153]"GEBNIS HATTE, OB ALSO DAS ERSTE ODER 1280 PRINT"DAS ZWEITE DATENWORT GROESSER WAR. 1290 [153]"VERGLEICHEN SIE DAS MIT DEM BASICBEFEHL 1300 PRINT"'IF A>B THEN GOTO ...' !! 1320 I[178]6:[141]5000:[139]FL[167]1000 1400 [153]"LOADTOTOTO":[153]"BEQWAIT BRANCH IF EQUAL ZERO (IF Z-FLAG=1) 1405 PRINT"[164][164][164] [197] [197][197] 1410 [153]"BNEWAIT BRANCH IF NOT EQUAL ZERO (IF Z = 0) 1415 PRINT" [197] [197] [197] 1420 [153]"BEI BEQ (BNE) ERFOLGT DER SPRUNG, WENN 1430 PRINT"DIE LETZTE OPERATION DAS ERGEBNIS NULL 1440 [153]"(UNGLEICH NULL) HATTE. 1450 PRINT"BESONDERS LEICHT ZU MERKEN IST DIE KOM- 1455 [153]"BINATION MIT VORANGEHENDEM CMP: 1510 I=7:GOSUB5000:IFFLTHEN1200 1600 PRINT"[147]CMP # $1A":PRINT"BEQ $0F" 1620 PRINT"BEDEUTET WOERTLICH VORGELESEN: COMPARE 1630 [153]"ACCUMULATOR WITH BYTE $1A AND IF EQUAL 1640 PRINT"BRANCH $0F BYTES. ODER AUF DEUTSCH: 1650 [153]"VERGLEICHE DAS BYTE IM AC MIT DEM BYTE 1660 PRINT"$1A UND WENN SIE GLEICH SIND, SPRINGE 1670 [153]"$0F (=15) BYTES NACH VORNE. 1680 PRINT"DIE ABKUERZUNGEN DER ASSEMBLERSPRACHE 1690 [153]"SIND HIER BESONDERS EINPRAEGSAM. 1710 I=8:GOSUB5000:IFFLTHEN1400 1800 PRINT"[147][164][164][164] [164][164][164]":PRINT"BCC[146]/BCS[146] BRANCH IF CARRY-FLAG CLEAR/SET 1810 [153]"TOTOTO TOTOTO":[153]"BVCWAIT/BVSWAIT '' OVERFLOW-FLAG '' 1820 PRINT"DER ERSTE BUCHSTABE (B) BEDEUTET WIEDER 1830 [153]"'BRANCH', DER ZWEITE (C/V) BEZEICHNET 1840 PRINT"DAS GETESTETE FLAG UND DER DRITTE (C/S) 1850 [153]"BEDEUTET 'CLEAR' BZW. 'SET'. ODER AUF 1855 PRINT"DEUTSCH: CLEAR = RUECKGESETZT (0) UND 1860 [153]"SET = GESETZT (1). 1870 PRINT"DIE BEFEHLE BVC/BVS WERDEN IHNEN NICHT 1880 [153]"OFT BEGEGNEN, BEQ/BNE JEDOCH SEHR OFT. 1910 I=9:GOSUB5000:IFFLTHEN1600 2000 PRINT"[147]BEISPIELE:":PRINTU$ 2005 PRINT"ZU JEDEM PROBLEM GIBT ES MEIST MEHRERE 2010 [153]"LOESUNGSMOEGLICHKEITEN, DIE SICH DURCH 2020 PRINT"DETAILS UNTERSCHEIDEN. IN DEN FOLGENDEN 2030 [153]"BEISPIELEN ZEIGEN WIR IHNEN ZUM SELBEN 2040 PRINT"PROBLEM VERSCHIEDENE LOESUNGEN MIT HIN- 2050 [153]"WEISEN,WO DIE UNTERSCHIEDE LIEGEN. VER- 2055 PRINT"SUCHEN SIE DIESE ZU VERSTEHEN !":PRINT"HIER DAS PROBLEM: 2070 [153]"LOESCHEN DER ERSTEN BILDSCHIRMZEILE VON 2080 PRINT"DEZ. 32768-32807 BZW. HEX $8000-$8027. 2110 I[178]10:[141]5000:[139]FL[167]1800 2200 [153]"LOAD1. MOEGLICHKEIT: 2220 A$="LDA #$20 LADE AC MIT ZEICHEN SPACE":PRINTA$ 2230 PRINT"LDX #$00 ZAEHLER AUF NULL SETZEN 2240 [153]"STA $8000,X AC NACH $8000+XR 2250 PRINT"INX ZAEHLER UM 1 ERHOEHEN 2260 [153]"CPX #$28 ENDE ERREICHT? 2270 PRINT"BNE $F8 SCHLEIFE 2280 [153]"ZAEHLER ZAEHLT VON $00 BIS $28. SCHLEI- 2290 PRINT"FENABBRUCH MIT XR=$28. LETZTE SPEICHER- 2300 [153]"ADRESSE: $8027. ABBRUCH BEI Z-FLAG = 1. 2310 I=11:GOSUB5000:IFFLTHEN2000 2400 PRINT"[147]2. MOEGLICHKEIT:":PRINTA$ 2420 PRINT"LDX #$27 ZAEHLER AUF $27 SETZEN 2430 [153]"STA $8000,X AC NACH $8000+XR 2440 PRINT"DEX ZAEHLER UM 1 ERNIEDRIGEN 2460 [153]"BPL $FA SCHLEIFE,BIS XR MINUS WIRD 2470 PRINT"ZAEHLER ZAEHLT VON $27 BIS $FF. SCHLEI- 2480 [153]"FENABBRUCH MIT XR=$FF. LETZTE SPEICHER- 2490 PRINT"ADRESSE: $8000. ABBRUCH BEI N-FLAG = 1. 2500 [153]"ZAEHLWEISE: RUECKWAERTS. 2510 I=12:GOSUB5000:IFFLTHEN2200 2600 PRINT"[147]3. MOEGLICHKEIT:":PRINTA$ 2620 PRINT"LDX #$28 ZAEHLER AUF $28 SETZEN 2630 [153]"STA $7FFF,X AC NACH $7FFF+XR 2640 PRINT"DEX ZAEHLER UM 1 ERNIEDRIGEN 2660 [153]"BNE $FA SCHLEIFE,BIS XR = $00 2670 PRINT"ZAEHLER ZAEHLT VON $28 BIS $00. SCHLEI- 2680 [153]"FENABBRUCH MIT XR=$00. LETZTE SPEICHER- 2690 PRINT"ADRESSE: $8000. ABBRUCH BEI Z-FLAG = 1. 2700 [153]"ZAEHLWEISE: RUECKWAERTS. 2710 I=13:GOSUB5000:IFFLTHEN2400 2800 PRINT"[147]AUFGABEN:":PRINTU$ 2805 PRINT"1. LOESCHEN DER ERSTEN 5 BILDSCHIRMZEI-":PRINT" LEN. 2820 [153]"2. ERSTE ZEILE MIT '*' VOLLSCHREIBEN. 2830 PRINT"3. IM 3. BEISPIEL HAT DAS XR BEIM AB- 2840 [153]" BRUCH DER SCHLEIFE DEN WERT $00. DER 2850 PRINT" SPEICHER $7FFF + $00 WIRD ABER NICHT 2860 [153]" MEHR ANGESPROCHEN. WARUM ? 2870 PRINT"DIE BEISPIELE 1-3 FINDEN SIE AB 830,850 2880 [153]"UND 870 IM RAM, AUFGABE 2 AB 890. 2910 PRINT" - SEITE 14 - <+> [145][164][164][164][164][157][157][157][157]ENDE[146] <-> VON VORNE"; 3060 GOSUB5020:ONFLGOTO0 3070 PRINT"[147]":FORI=0TO40:SYS890:FORW=0TO10:NEXTW:SYS830:FORW=0TO20:NEXTW:NEXTI 3080 END:RUN 5000 REM UMBLAETTERN 5010 PRINT" - SEITE";I;"- <+> WEITER <-> ZURUECK"; 5020 FORI=0TO11:GETX$:NEXT 5030 GETX$:IFX$=""THEN5030 5040 IFX$="+"THENFL=0:RETURN 5050 IFX$="-"THENFL=1:RETURN 5060 GOTO5030